import java.util.Scanner;

public class Jose {
    static final int Num=41;//总人数
    static final int KillMan=3;//自杀者

    static void jose(int alive){
        int[] man=new int[Num];//预备一个数组用于存放自杀的人
        int count=1;//记录自杀者的数量
        int i=0;//i=1~3循环往复，用于记录报数，当i=3时，该人自杀
        int pos=0;//记录数组下标
        while (count<=Num){
            do {
                if (man[pos]==0)//说明下标为pos的人还活着
                    i++;//开始报数
                if (i==KillMan){//该人自杀
                    i=0;//准备下一轮报数
                    break;
                }
                pos=(pos+1) % Num;//pos=0~40，反复取余让其反复循环

            }while (true);
            man[pos]=count;//将自杀的人存入数组
            if (count<=Num-alive){
                System.out.println("第"+(pos+1)+"号自杀，约瑟夫环编号为"+man[pos]);
            }else {
                System.out.println("第"+(pos+1)+"号存活！约瑟夫环编号为"+man[pos]);
            }
            count++;
        }
        System.out.println("这"+alive+"个需要存活的人初始位置应排在以下序号:");
        alive=Num-alive;
        for (i=0;i<Num;i++){
//            System.out.println(man[i]);
            if (man[i]>alive){//寻找最后存入数组的2个人
                System.out.println("初始编号:"+(i+1)+",约瑟夫环编号:"+man[i]);
            }
        }
    }
    public static void main(String[] args) {
        int alive;
        Scanner input=new Scanner(System.in);
        System.out.print("输入需要存活的人的数量：");
        alive=input.nextInt();
        jose(alive);
    }
}